1. Field of the Invention
The invention relates generally to serial interface storage systems and more specifically relates to methods and structures for assuring proper data order in delivering SATA (Serial ATA) frames from a SATA device to a SAS/SATA controller over a SAS (Serial Attached SCSI) wide port.
2. Discussion of Related Art
As computing application performance demands have increased, so too have performance and capacity demands on storage systems utilized in conjunction with computing systems. Storage systems such as disk storage system now provide storage capacities of hundreds of gigabytes or terabytes. To improve both performance and reliability, it is common that storage systems provide a plurality of storage devices and storage controllers all operable in parallel and often providing redundancy. Parallel operation of multiple devices within a storage system may improve performance by distributing I/O operations over a plurality of such storage devices operating substantially in parallel. Reliability is improved by providing redundancy of the devices as well as redundant information such that the failure of a particular storage device does not cause failure of the entire system nor loss of data. Rather, continued operation of the storage system may be provided though possibly in a degraded state and any lost data may be recovered from redundant information stored on other storage devices still operating. Such techniques are often referred to as redundant arrays of inexpensive disks or RAID. Numerous types of RAID storage management (referred to a RAID levels) are generally known in the art providing varying degrees of redundancy to improve reliability with and without so-called striping to distribute data over a plurality of parallel operating devices.
As such high performance, high reliability storage systems evolved, they have migrated from strict parallel SCSI interfaces to more advanced high speed serial interfaces. SCSI (small computer systems interface) originated as a specification for a parallel bus structure and an associated command and status protocol. Over time, the SCSI specification has largely separated the command and status protocol standards from the transmission medium standards used for exchange of such commands and status information. It is common these days to utilize SCSI command and status protocols over other transmission media including, for example, high speed serial interfaces. Serial attached SCSI (“SAS”) devices utilize such high speed serial interfaces coupled with SCSI command and status protocols.
Yet another step in the evolution of storage systems has been the use of lower cost ATA (AT Attachment also referred to as IDE) storage devices (i.e., ATA disk drives) within the high performance high reliability storage system. These lower cost ATA storage devices provide similar performance and reliability as compared to high performance, high reliability, SCSI storage devices but do so at substantially lower cost due in large part to market forces. Such ATA storage devices are known to be utilized in high speed, high reliability storage systems through use of SATA (serial ATA) protocols. The SATA standards generally define protocols for exchanging ATA command and status information over SAS media and protocols.
Specifications for the various SCSI, SAS and SATA standards are well known to those of ordinary skill in the art and are widely available located at, for example, the website www.t10.org.
One beneficial feature of the SAS protocols and transmission media is the definition and utilization of so called “wide ports”. A SAS wide port is a logical grouping or aggregation of multiple physical transmission links (e.g., multiple PHY links). The aggregation of multiple PHY links into a single SAS wide port allows for overlap and parallelism in the communication of I/O requests between a host based SAS controller and a SAS device (through any intermediate SAS expanders as required).
The SAS specifications generally permits all ports of a wide port to be used concurrently for different I/O exchanges. However, for any single I/O exchange, the SAS specifications impose a restriction that only one port at a time to be used in the multiple ports that make up a SAS wide port. However, the transmission of a next frame may commence on another port of the wide port immediately following completion of transmission of a preceding frame on another port. As the frames may be buffered at the receiving end and the processing of frames may vary in duration, a process or standard is required to be certain that the received frames are processed in the intended order. In standard SCSI transmissions over a SAS link including a SAS wide port, sequencing information is embedded within the exchanged information to assure that frames delivered over different PHY links of the wide SAS port will be processed in the appropriate sequence at the receiving end of the transmission. Thus, multiple frames may be transmitted over different PHY links of the SAS wide port and the intrinsic sequencing information within each transmitted frame may be relied upon to ensure proper ordering of the received frames in any further processing.
A problem arises however in processing of SATA frames over a SAS wide port. Unlike SCSI transmissions over a SAS wide port, SATA frames include no intrinsic sequencing or ordering information. It is therefore a problem to assure proper ordering or sequencing of received frames when SATA transmissions are exchanged over a SAS wide port. Modifying the SATA transmission frames to include intrinsic ordering or sequencing information is generally not desirable because corresponding changes would be required in each cooperating SAS/SATA controller and SATA device. Such custom changes to SATA devices may be impractical in many applications. One approach is to simply avoid the problem by restricting the use of such SAS wide ports where SATA exchanges are anticipated. Again, such a restriction may be impractical in many common applications including, in particular, applications where both SCSI SAS transmissions and SATA SAS transmissions are commingled within a single SAS domain.
It is evident from the above discussion that a need exists for an improved method and structure for ensuring proper ordering or sequencing of SATA frames exchanged between a SAS/SATA controller and a SATA device through a SAS wide port.